import 'dart:convert';

import 'package:crypto/crypto.dart';
import 'package:flutter_baselib/lib.dart';

///@date:  2021/02/24
///@author:  lixu
///@description:  常用加密算法
class EncodeUtils {
  EncodeUtils._();

  /// md5 加密
  static Future<String> generateMd5(String data) async {
    var content = Utf8Encoder().convert(data);
    var digest = md5.convert(content);
    return digest.toString();
  }

  ///获取请求头sign
  ///该加密算法是看渐使用过的，后续项目根据后端定义的算法修改即可
  ///[params] 请求参数map
  ///[key] 加密key（服务端提供）
  static Future<String> getSignEncode(Map<String, dynamic> paramsMap, String key) async {
    String requestJson = json.encode(paramsMap);
    LogUtils.e('EncodeUtils', requestJson);

    String finalSign = await generateMd5(requestJson + key);
    return finalSign;
  }
}
